# 高阶函数：把一个函数，当做另一个函数的参数

# 1、预备知识 -- 一些内置的运算函数
# abs(a)：求数字的绝对值
print(abs(-10))

# round(a)：对数字进行四舍五入
print(round(1.3))
print(round(1.9))

# divmod(x, y): 输出二元组(x//y , x%y)
print(divmod(10, 3))

# pow(x, y): 等价于 x**y
print(pow(2, 4))

# pow(x, y, z): 等价于 (x ** y) % z
print(pow(2, 4, 3))

# max(*args): 找最大值
print(max(1, 4, 6, 2, 3))

# min(*args): 找最小值
print(min(1, 30, 25, -3, 7))

print('================')

# 2、高阶函数
# 需求：任意两个数字，先进行数字处理（绝对值或四舍五入）再求和计算
# 写法一：
def add_num(num1, num2):
    # 数字处理 仅可取绝对值
    return abs(num1) + abs(num2)


result = add_num(-3, -1.6)
print(result)


# 写法二：高阶函数
def sum_num(num1, num2, fun):  # fun用来接收将来传入的函数
    # 数字可以进行任意处理
    return fun(num1) + fun(num2)


result = sum_num(-3, -1.6, abs)
print(result)
result = sum_num(-3, -1.4, round)
print(result)
